79ace986658a417e0371dee2a43f32a69114f3b1,httpcore5-h2/src/main/java/org/apache/hc/core5/http2/impl/nio/ServerHttp2StreamHandler.java,ServerHttp2StreamHandler,consumeHeader,#List#boolean#,169
Before Change
if (handler == null) {
throw new H2StreamResetException(H2Error.REFUSED_STREAM, "Stream refused");
}
if (handler == null) {
throw new H2ConnectionException(H2Error.INTERNAL_ERROR,
"Unable to handle " + request.getMethod() + " " + request.getPath());
}
exchangeHandler = handler;
context.setProtocolVersion(HttpVersion.HTTP_2);
context.setAttribute(HttpCoreContext.HTTP_REQUEST, request);
context.setAttribute(HttpCoreContext.HTTP_CONNECTION, connection);
exchangeHandler.setContext(context);
httpProcessor.process(request, requestEntityDetails, context);
connMetrics.incrementRequestCount();
boolean expectContinue = false;
if (requestEntityDetails != null) {
final Header h = request.getFirstHeader(HttpHeaders.EXPECT);
if (h != null && "100-continue".equalsIgnoreCase(h.getValue())) {
expectContinue = true;
}
}
if (expectContinue) {
exchangeHandler.verify(request, requestEntityDetails, new ExpectationChannel() {
@Override
public void sendResponse(
final HttpResponse response, final EntityDetails responseEntityDetails) throws HttpException, IOException {
commitResponse(response, responseEntityDetails);
}
@Override
public void sendContinue() throws HttpException, IOException {
commitContinue();
exchangeHandler.handleRequest(request, requestEntityDetails, new ResponseChannel() {
@Override
public void sendResponse(
final HttpResponse response, final EntityDetails responseEntityDetails) throws HttpException, IOException {
commitResponse(response, responseEntityDetails);
}
@Override
public void pushPromise(
final HttpRequest promise, final AsyncPushProducer pushProducer) throws HttpException, IOException {
commitPromise(promise, pushProducer);
}
});
}
});
} else {
exchangeHandler.handleRequest(request, requestEntityDetails, new ResponseChannel() {
@Override
public void sendResponse(
final HttpResponse response, final EntityDetails responseEntityDetails) throws HttpException, IOException {
commitResponse(response, responseEntityDetails);
}
@Override
public void pushPromise(
final HttpRequest promise, final AsyncPushProducer pushProducer) throws HttpException, IOException {
commitPromise(promise, pushProducer);
}
});
}
}
After Change
httpProcessor.process(request, requestEntityDetails, context);
connMetrics.incrementRequestCount();
exchangeHandler.handleRequest(request, requestEntityDetails, new ResponseChannel() {
@Override
public void sendInformation(final HttpResponse response) throws HttpException, IOException {
commitInformation(response);
}
@Override
public void sendResponse(
final HttpResponse response, final EntityDetails responseEntityDetails) throws HttpException, IOException {
commitResponse(response, responseEntityDetails);
}
@Override
public void pushPromise(
final HttpRequest promise, final AsyncPushProducer pushProducer) throws HttpException, IOException {
commitPromise(promise, pushProducer);
}
});
}
@Override